package LogicaClasesNew;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;

@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Table(name="proveedores")
public class Proveedor extends Usuario implements Serializable{
    
@XmlElement
private String Compania;
@XmlElement
private String Web;
    
//@XmlElement
@XmlTransient
@OneToMany
private List<Producto>listaproductos;
    
//******FIN DE ATRIBUTOS**********
    
    //Constructor por defecto
    public Proveedor() {   
        //Creo un listado de productos vacio
        listaproductos=new ArrayList<Producto>();
    }
    
 //Contructor con todos los parametros
    public Proveedor(String Compania, String Web, String Nickname, String Nombre, String Apellido, String FechNacim, String password, String Mail) {
        super(Nickname, Nombre, Apellido, FechNacim, password, Mail);
        this.Compania = Compania;
        this.Web = Web;
        listaproductos=new ArrayList<Producto>();
    }
    
    //Contructor con todos los parametros
    public Proveedor(String Compania, String Web, String Nickname, String Nombre, String Apellido, String FechNacim, String password, String Mail, byte[] Foto) {
        super(Nickname, Nombre, Apellido, FechNacim, password, Mail, Foto);
        this.Compania = Compania;
        this.Web = Web;
        listaproductos=new ArrayList<Producto>();
    }
    
    
    //GETTERS Y SETTERS*********************************************************
    public void setCompania(String Compania) {
        this.Compania = Compania;
    }
    
    public List<Producto> getlistaproductos() {//Retorna el listado de todos los productos 
        return listaproductos;
    }
    
    public void addproducto(Producto p) { //Me asigna un producto al proveedor
        //System.out.println("Ingreso a addproducto");
        listaproductos.add(p);
    }
    
    public void removeProducto(Producto p) { //Me quita un producto al proveedor
        //System.out.println("Ingreso a addproducto");
        listaproductos.remove(p);
    }
    
    
    public void setWeb(String Web) {
        this.Web = Web;
    }

    public String getCompania() {
        return Compania;
    }

    public String getWeb() {
        return Web;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 79 * hash + Objects.hashCode(this.Compania);
        hash = 79 * hash + Objects.hashCode(this.Web);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Proveedor other = (Proveedor) obj;
        if (!Objects.equals(this.Compania, other.Compania)) {
            return false;
        }
        if (!Objects.equals(this.Web, other.Web)) {
            return false;
        }
        return true;
    }

   
    }

 
    
    
